package chapter07

/**
 * Created with IntelliJ IDEA.
 * ClassName: Test13_Simple
 * Package: chapter07
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 *          Date: 2023-06-28
 *          Time: 20:42
 */

//常见集合的运算函数
object Test13_Simple {
  def main(args: Array[String]): Unit = {
    val list = List(5, 1, 8, 2, -3, 4)

    //q求和
    var num = 0;
    for (elem <- list) {
      num = elem + num
    }
    println(num)
    println(list.sum)

    //乘积
    println(list.product)
    //最大值
    println(list.max)
    //最小值
    println(list.min)

    val list2 = List(("a", 5), ("b", 1), ("c", 8), ("d", 2), ("e", -3), ("f", 4))
    println(list2.max) //(f,4) 单纯使用max判断元组 值判断第一个值 所以是f
    //maxBy 传的是函数
    println(list2.maxBy((tuple: (String, Int)) => tuple._2)) //(c,8)
    //匿名函数的至简原则 类型定死了不写 参数不重要 下划线代替
    println(list2.maxBy(_._2))

    println(list2.minBy(_._2)) //最小值 (e,-3)

    //排序 最后返回的是一个集合类型
    println(list.sorted) //List(-3, 1, 2, 4, 5, 8) 生成一个新集合

    println(list.sorted.reverse)
    //从大到小 传入隐式参数
    println(list.sorted(Ordering[Int].reverse))

    println(list2.sorted) //也是按第一个数排序
    println(list2.sortBy(_._2)) //按照第二个
    println(list2.sortBy(_._2)(Ordering[Int].reverse))

    println("_-----------------------_")
    //sortWith 从小到大 a < b满足就不变 不满足就交换
    println(list.sortWith((a: Int, b: Int) => {
      a < b
    }))
    //匿名函数至简原则
    println(list.sortWith(_ < _))
    println(list.sortWith(_ > _))


  }
}
